#include <iostream>
#include <pthread.h>
#include <unistd.h>

// int cnt = 0;
__thread int cnt = 0; // __thread修饰的全局变量，每个线程都会各自有一份，互不影响

// void *routine(void *args)
// {
//     pthread_detach(pthread_self()); // 线程分离
//     int i = 5;
//     while (i--)
//     {
//         std::cout << "thread 1 " << "cnt:" << cnt++ << std::endl;
//         sleep(1);
//         // exit(1); // 整个进程都会退出
//         // pthread_exit(nullptr); // 线程退出不影响其它线程
//     }

//     return nullptr;
// }

void *routine(void *args)
{
    pthread_detach(pthread_self()); // 线程分离
    sleep(1);

    execl("/bin/ls", "ls -a"); // 程序替换
    sleep(1);

    return nullptr;
}

int main()
{
    // 创建线程
    pthread_t tid;
    pthread_create(&tid, nullptr, routine, nullptr);

    // 主线程
    int i = 4;
    while (i--)
    {
        std::cout << "main thread  " << "cnt:" << cnt++ << std::endl;
        sleep(1);
    }
    pthread_join(tid, nullptr); // 阻塞回收线程

    return 0;
}